
/**
 * 路由重写
 */
export function pageBack(delta = 1, params = {}, switchTab = false) {
	let path = ''
	if(delta.length > 1){
		path = delta
		let params_str = urlEncode(params)
		if(params_str){
			path = path + '?' + params_str
		}
	}
	if(path){
		if(switchTab == true || path == '/index'){
			uni.switchTab({
				url: path == '/index' ? '/pages/index/index' : path
			});
		}else{
			uni.navigateTo({
				url: path
			});
		}
	}else{
		delta = Number(delta)
		let pageStack = getCurrentPages()
		if(pageStack[pageStack.length - 1 - delta]){
			uni.navigateBack({
			    delta: delta
			});
		}else{
			uni.switchTab({
				url: '/pages/index/index'
			});
		}
		
		// if(pageStack[pageStack.length - 1 - delta]){
		// 	uni.navigateBack({
		// 	    delta: delta
		// 	});
		// }else{
		// 	uni.switchTab({
		// 		url: '/pages/index/index'
		// 	});
		// }
	}
}


/**
 * 跳转登录页面
 */
export function goLogin() {
	// #ifdef MP-WEIXIN
	uni.navigateTo({
		url: "/pages/login/weixin_oauth_login"
	})
	// #endif
	// #ifndef MP-WEIXIN
	uni.navigateTo({
		url: "/pages/login/form_login"
	})
	// #endif
}



export function urlEncode (param, key, encode) {
  if(param==null) return '';
  var paramStr = '';
  var t = typeof (param);
  if (t == 'string' || t == 'number' || t == 'boolean') {
    paramStr += '&' + key + '=' + ((encode==null||encode) ? encodeURIComponent(param) : param);
  } else {
    for (var i in param) {
      var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
      paramStr += urlEncode(param[i], k, encode);
    }
  }
  return paramStr;
}


/**
 * 获取当前时间戳
 */
export function getTime() {
    
    return Number(Date.parse(new Date()).toString().substr(0, 10))
}


/**
 * 格式化时间
 */
export function formatDate(t) {
	t = t || Date.now();
	let time = new Date(t);
	let str = time.getMonth() < 9 ? ('0' + (time.getMonth() + 1)) : (time.getMonth() + 1);
	str += '-';
	str += time.getDate() < 10 ? ('0' + time.getDate()) : time.getDate();
	str += ' ';
	str += time.getHours();
	str += ':';
	str += time.getMinutes() < 10 ? ('0' + time.getMinutes()) : time.getMinutes();
	return str;
}


/**
 * 克隆变量
 */
export function deepClone(target) {
    // 定义一个变量
    let result
    // 如果当前需要深拷贝的是一个对象的话
    if (typeof target === 'object') {
    // 如果是一个数组的话
        if (Array.isArray(target)) {
            result = [] // 将result赋值为一个数组，并且执行遍历
            for (let i in target) {
                // 递归克隆数组中的每一项
                result.push(deepClone(target[i]))
            }
            // 判断如果当前的值是null的话；直接赋值为null
        } else if (target === null) {
            result = null
            // 判断如果当前的值是一个RegExp对象的话，直接赋值
        } else if (target.constructor === RegExp) {
            result = target
        } else {
            // 否则是普通对象，直接for in循环，递归赋值对象的所有值
            result = {}
            for (let i in target) {
                result[i] = deepClone(target[i])
            }
        }
        // 如果不是对象的话，就是基本数据类型，那么直接赋值
    } else {
        result = target
    }
    // 返回最终结果
    return result
}

/**
 * 联动选择器 城市tree过滤转化
 */
export function dataPickerFilter(tree, value, text, children) {
    let CascaderOption = []
    tree.forEach(v => {
        let temp = []
        if (v[children] && v[children].length > 0) {
            temp = this.dataPickerFilter(v[children], value, text, children)
        }
        if (temp.length > 0) {
            CascaderOption.push({'value': v[value], 'text': v[text], 'children': temp})
        } else {
            CascaderOption.push({'value': v[value], 'text': v[text]})
        }
    })
    return CascaderOption
}


/**
 * 指定单元值作为key索引
 */
export function valueToIndex(object, index) {
	let newObject = []
	object.forEach(v => {
		newObject[v[index]] = v
	})
	
    return newObject
}

export default {
	pageBack,
	goLogin,
	urlEncode,
	getTime,
	formatDate,
	deepClone,
	dataPickerFilter,
	valueToIndex
}